/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.tencent.tendon.convert.json;

import java.lang.annotation.*;
import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.*;

/**
 * 依附在setter、getter方法， 用于指定的字段进行简单的配置
 *
 * @author nbzhang
 */
@Inherited
@Documented
@Target({METHOD, FIELD})
@Retention(RUNTIME)
public @interface JsonRef {

    /**
     * 给字段取个别名
     *
     * @return
     */
    String alias() default "";

    /**
     * 解析/序列化时是否屏蔽该字段
     *
     * @return
     */
    boolean ignore() default false;

    /**
     * 给指定的属性赋予特定的JsonListener
     *
     * @return
     */
    Class<? extends JsonListener> listener() default JsonListener.class;

    /**
     * 如果setter getter方法不是简单的直接操作field则设为true， 
     * 为false框架会直接调用field， 而不是method
     * 例如: public int getNumber(){ return number; } 
     * 这种情况应该设置为false， 默认值也就是false; 
     * public int getNumber(){ return number > 0 ? -1 : number; }
     * 这种不是直接返回number的情况应该设置为true 
     * setter getter方法都一样
     *
     */
    boolean indirect() default false;
}
